package movilmax.sia_corp.action;

import java.util.Map;

import movilmax.sia_corp.model.Usuario;

import apli.conectar.Conectar;
import basedatos.Fecha;
import basedatos.Resultado;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class AsignarCliente extends ActionSupport{
	private static final long serialVersionUID = 4970996752273882378L;
	
	private String cod_cliente;
	private String des_cliente;
	private String cod_vendedor;
	private String obs;
	private String fecha_lim;
	private String cli_status;

@SuppressWarnings("rawtypes")
public String asignar() throws Exception {
		
		Map session = ActionContext.getContext().getSession();
	    Usuario USUARIO = (Usuario)session.get("ses_usuario");
	    if(USUARIO== null){
	    	this.addActionError("La sesion del usuario ha caducado");
	    	return ERROR;
	    }
	    if(this.getCod_cliente()==null){
	    	this.addActionError("Debe indicar el codigo del cliente");
	    	return ERROR;
	    }
	    if(this.getCod_vendedor() ==null){
	    	this.addActionError("Debe indicar el codigo del vendedor");
	    	return ERROR;
	    }
	    Conectar BASE=new Conectar();
		Fecha fecha=new Fecha();
		String dia= fecha.getFecha();
		String hora=fecha.getHoras();
		String SQL="",obs="NINGUNA";
		String stx=this.getCli_status();
		if(BASE.getMsg().equals("SI")){
			if(stx.equals("POR ASIGNAR")){
				obs="ASIGNADO POR SUPERVISOR";
				SQL="UPDATE corp_asignaciones_cli set status='REASIGNADO',fecha_actualizo='" + dia + "',hora_actualizo='" + hora + "' where cliente='" + this.getCod_cliente() + "' and status in('EN PROCESO')   ";
				BASE.getBaseDatos().ejecutar(SQL);
				SQL="UPDATE clientes set status='EN PROCESO' where codigo='" + this.getCod_cliente() + "'  ";
				BASE.getBaseDatos().ejecutar(SQL);
				SQL="INSERT INTO corp_asignaciones_cli(cliente,vendedor,observaciones,fecha,hora,fecha_actualizo,hora_actualizo,status) "+
		        "VALUES ('" + this.getCod_cliente() + "','" + getCod_vendedor() + "','" +obs + "','" + dia + "','" + hora + "','" + dia + "','" + hora + "','EN PROCESO' )";
				BASE.getBaseDatos().ejecutar(SQL);
				setCod_vendedor("-1");
				this.addActionMessage("Asignado");
			}else if(stx.equals("EN PROCESO")  || stx.equals("EN PAUSA") || stx.equals("RECHAZADO")  ) {
				obs="REASIGNADO POR SUPERVISOR";
				SQL="UPDATE corp_asignaciones_cli set status='REASIGNADO',fecha_actualizo='" + dia + "',hora_actualizo='" + hora + "' where cliente='" + this.getCod_cliente() + "' and status in('EN PROCESO','RECHAZADO','EN PAUSA') ";
				BASE.getBaseDatos().ejecutar(SQL);
				SQL="UPDATE clientes set status='EN PROCESO' where codigo='" + this.getCod_cliente() + "'  ";
				BASE.getBaseDatos().ejecutar(SQL);
				SQL="INSERT INTO corp_asignaciones_cli(cliente,vendedor,observaciones,fecha,hora,fecha_actualizo,hora_actualizo,status) "+
		        "VALUES ('" + this.getCod_cliente() + "','" + getCod_vendedor() + "','" +obs + "','" + dia + "','" + hora + "','" + dia + "','" + hora + "','EN PROCESO' )";
				BASE.getBaseDatos().ejecutar(SQL);
				setCod_vendedor("-1");
				this.addActionMessage("ReAsignado");
			 }else{
				 this.addActionError("Status invalido");
				 return ERROR;  
			 }
		}else{
				this.addActionError("No hay conexion al servidor");
				return ERROR;
		}
		
		SQL="Select P.identificacion,P.nombres+' '+P.apellidos as razonx,P.telefono,P.telefono_oficina,P.celular,P.email,U.email as em_vendedor,U2.email as em_sup,V.supervisor,V.descripcion as des_vend "+
            "from clientes P,corp_asignaciones_cli A,usuarios U,vendedores V,usuarios U2  "+
            "Where P.codigo='"+ this.getCod_cliente() +"'  And P.codigo = A.cliente and A.status='EN PROCESO' and A.vendedor=V.cod  and V.usuario=U.usuario and V.supervisor=U2.usuario ";

		Resultado RCS = BASE.getBaseDatos().consultar(SQL);
        if(RCS.RP){
        	String MPARA ="dick@movilmax.com,"+RCS.getCadena("em_sup")+","+RCS.getCadena("em_vendedor");
        	String ASIGNADO_A=RCS.getCadena("des_vend");
        	String razon=RCS.getCadena("identificacion")+" - "+RCS.getCadena("razonx");
        	String telfs=RCS.getCadena("telefono")+" / "+RCS.getCadena("telefono_oficina")+" / "+RCS.getCadena("celular");
        	String email=RCS.getCadena("email");
        	//String obs_=RCS.getCadena("observaciones");
        	String nv_prop=RCS.getCadena("supervisor");
        	String  MSG_EM="";
		        	//*********************************ENVIAR CORREO REGISTRO PROSPECTO ****************************************************************//
			        MSG_EM = "Se le ha asignado un cliente <br/>\n";
					MSG_EM = MSG_EM + "Cliente asignado por "+ USUARIO.getDescripcion() +" desde (SIA - WEB )<br/> \n";
					MSG_EM = MSG_EM + "Asignado  a: " + ASIGNADO_A + " <br/> \n";
					MSG_EM = MSG_EM + "Razon social: " + razon + " <br/>\n"; 
					MSG_EM = MSG_EM + "Telefonos: " + telfs +" <br/>\n";
					MSG_EM = MSG_EM + "Email: " + email + " <br/>\n";
					SQL=" INSERT INTO apli_emails (de,para,cabecera,mensaje) VALUES('sia@movilmax.com','" + MPARA + "','CLIENTE ( "+  razon +" ) "+obs+"','" + MSG_EM + "' ) ";
					BASE.getBaseDatos().ejecutar(SQL);
			        //*************************************FIN DE ENVIO DE CORREO*********************************************************//
					SQL="UPDATE clientes set prop='"+nv_prop+"' where codigo='" + this.getCod_cliente() + "'  ";
					BASE.getBaseDatos().ejecutar(SQL);
        }
        SQL="INSERT INTO corp_seguimiento_actividad_cli " +
			"(cliente,actividad,detalle,obs,usuario,fecha,hora) "+
			"VALUES('"+this.getCod_cliente() +"','9','0','"+obs+"','"+ USUARIO.getUsuario() +"','"+dia+"','"+hora+"' )";
        BASE.getBaseDatos().ejecutar(SQL); 
        BASE.getBaseDatos().cerrarConexion(); 
		return SUCCESS;
	}
	
	
	public String mostrar_frm() throws Exception {
		this.setFecha_lim(new Fecha().agregar(6, 2) );
		return SUCCESS;
	}
	public String getCod_cliente() {
		return cod_cliente;
	}
	public void setCod_cliente(String cod_cliente) {
		this.cod_cliente = cod_cliente;
	}
	public String getDes_cliente() {
		return des_cliente;
	}
	public void setDes_cliente(String des_cliente) {
		this.des_cliente = des_cliente;
	}
	public String getCod_vendedor() {
		return cod_vendedor;
	}
	public void setCod_vendedor(String cod_vendedor) {
		this.cod_vendedor = cod_vendedor;
	}
	public String getObs() {
		return obs;
	}
	public void setObs(String obs) {
		this.obs = obs;
	}
	public String getFecha_lim() {
		return fecha_lim;
	}
	public void setFecha_lim(String fecha_lim) {
		this.fecha_lim = fecha_lim;
	}
	public String getCli_status() {
		return cli_status;
	}
	public void setCli_status(String cli_status) {
		this.cli_status = cli_status;
	}

}
